package com.zyf.chapter02.creation.factory.simple;

import com.zyf.chapter02.creation.factory.util.*;

/**
 * 需求：根据配置文件的后缀（json、xml、yaml、properties），选择不同的解析器（JsonRuleConfigParse...），
 * 将存储在文件中的配置解析成内存对象
 * @author yifeng
 */
public class V3RoleConfigSource {
    public RuleConfig load(String ruleConfigFilePath) throws InvalidRuleConfigException {
        String ruleConfigFileExtension = getFileExtension(ruleConfigFilePath);
        // 使用简单工厂方法
        IRuleConfigParser parser = V2RuleConfigParserFactory.createParser(ruleConfigFileExtension);
        if (parser == null) {
            throw new InvalidRuleConfigException("Rule config file format is not supported: " + ruleConfigFilePath);
        }
        String configText = "";
        // 从 ruleConfigFilePath 文件中读取文本到 configText 中
        RuleConfig ruleConfig = parser.parse(configText);
        return ruleConfig;
    }

    private String getFileExtension(String ruleConfigFilePath) {
        // 解析文件获取扩展名，比如 rule.json，返回 json
        return "json";
    }
}
